<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.9.1"/>
<title>IDA SDK: func_item_iterator_t Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">IDA SDK
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.9.1 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="files.html"><span>Header&#160;Files</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="classfunc__item__iterator__t-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">func_item_iterator_t Class Reference</div>  </div>
</div><!--header-->
<div class="contents">
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Class to enumerate all function instructions and data sorted by addresses. </p>
<p>The function entry chunk items are enumerated first regardless of their addresses</p>
<p>Sample code: </p><div class="fragment"><div class="line"><a class="code" href="classfunc__item__iterator__t.html">func_item_iterator_t</a> fii;</div>
<div class="line"><span class="keywordflow">for</span> ( <span class="keywordtype">bool</span> ok=fii.<a class="code" href="classfunc__item__iterator__t.html#a5e6a3e3893f4c086297b99d0a544f265">set</a>(pfn, ea); ok; ok=fii.next_addr() )</div>
<div class="line">  <a class="code" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea = fii.current();</div>
<div class="line">  ....</div>
</div><!-- fragment --><p>If 'ea' is not specified in the call to <a class="el" href="classfunc__item__iterator__t.html#a5e6a3e3893f4c086297b99d0a544f265" title="Set a function range. if pfn == NULL then a segment range will be set. ">set()</a>, then the enumeration starts at the function entry point. If 'pfn' is specified as NULL then the <a class="el" href="classfunc__item__iterator__t.html#a5e6a3e3893f4c086297b99d0a544f265" title="Set a function range. if pfn == NULL then a segment range will be set. ">set()</a> function will fail, but it is still possible to use the class. In this case the iteration will be limited by the segment boundaries. It is also possible to enumerate addresses in an arbitrary range using <a class="el" href="classfunc__item__iterator__t.html#ad4670b4ecdce6b75bfa2bc16f5f1faa1" title="Set an arbitrary range. ">set_range()</a>. </p>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ad3a41b885c340296146cea3b11d1ab24"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3a41b885c340296146cea3b11d1ab24"></a>
&#160;</td><td class="memItemRight" valign="bottom"><b>func_item_iterator_t</b> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> _ea=<a class="el" href="pro_8h.html#a63a7c1cde5fb0cf0d0023d55c742dd4f">BADADDR</a>)</td></tr>
<tr class="separator:ad3a41b885c340296146cea3b11d1ab24"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5e6a3e3893f4c086297b99d0a544f265"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e6a3e3893f4c086297b99d0a544f265"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfunc__item__iterator__t.html#a5e6a3e3893f4c086297b99d0a544f265">set</a> (<a class="el" href="classfunc__t.html">func_t</a> *pfn, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> _ea=<a class="el" href="pro_8h.html#a63a7c1cde5fb0cf0d0023d55c742dd4f">BADADDR</a>)</td></tr>
<tr class="memdesc:a5e6a3e3893f4c086297b99d0a544f265"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set a function range. if pfn == NULL then a segment range will be set. <br /></td></tr>
<tr class="separator:a5e6a3e3893f4c086297b99d0a544f265"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad4670b4ecdce6b75bfa2bc16f5f1faa1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad4670b4ecdce6b75bfa2bc16f5f1faa1"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classfunc__item__iterator__t.html#ad4670b4ecdce6b75bfa2bc16f5f1faa1">set_range</a> (<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea1, <a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a> ea2)</td></tr>
<tr class="memdesc:ad4670b4ecdce6b75bfa2bc16f5f1faa1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set an arbitrary range. <br /></td></tr>
<tr class="separator:ad4670b4ecdce6b75bfa2bc16f5f1faa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3fb6bc1419e1c968ee070d8faffd460d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3fb6bc1419e1c968ee070d8faffd460d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>first</b> (void)</td></tr>
<tr class="separator:a3fb6bc1419e1c968ee070d8faffd460d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a60cb3ef524a0121bb1b2a42fe78a8255"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a60cb3ef524a0121bb1b2a42fe78a8255"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>last</b> (void)</td></tr>
<tr class="separator:a60cb3ef524a0121bb1b2a42fe78a8255"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0cdac7ad48abd910575fdfb0584088d1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0cdac7ad48abd910575fdfb0584088d1"></a>
<a class="el" href="pro_8h.html#a7b0aeaed04e477c02cf8ea3452002d1a">ea_t</a>&#160;</td><td class="memItemRight" valign="bottom"><b>current</b> (void) const </td></tr>
<tr class="separator:a0cdac7ad48abd910575fdfb0584088d1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4c9276a05402d63b9100fbc3924cb75b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c9276a05402d63b9100fbc3924cb75b"></a>
const range_t &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>chunk</b> (void) const </td></tr>
<tr class="separator:a4c9276a05402d63b9100fbc3924cb75b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc50e9e8c4f5a7a213e682442c375e28"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acc50e9e8c4f5a7a213e682442c375e28"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>next</b> (<a class="el" href="bytes_8hpp.html#ac7890d524959057570f4a60a4f8b42c6">testf_t</a> *func, void *ud)</td></tr>
<tr class="separator:acc50e9e8c4f5a7a213e682442c375e28"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a59c440471815e136a967eed65b4942f6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59c440471815e136a967eed65b4942f6"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>prev</b> (<a class="el" href="bytes_8hpp.html#ac7890d524959057570f4a60a4f8b42c6">testf_t</a> *func, void *ud)</td></tr>
<tr class="separator:a59c440471815e136a967eed65b4942f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f4684f31f75a493d2979dd1c7702f42"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6f4684f31f75a493d2979dd1c7702f42"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>next_addr</b> (void)</td></tr>
<tr class="separator:a6f4684f31f75a493d2979dd1c7702f42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a611599008f90ba763e7c6955704836de"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a611599008f90ba763e7c6955704836de"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>next_head</b> (void)</td></tr>
<tr class="separator:a611599008f90ba763e7c6955704836de"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad904fde2411f759c8021afd5c2eebf4f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad904fde2411f759c8021afd5c2eebf4f"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>next_code</b> (void)</td></tr>
<tr class="separator:ad904fde2411f759c8021afd5c2eebf4f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac5a3baa6b65438c348dfd0fea7a2896e"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac5a3baa6b65438c348dfd0fea7a2896e"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>next_data</b> (void)</td></tr>
<tr class="separator:ac5a3baa6b65438c348dfd0fea7a2896e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a714fe4a8b3b2d90c49a1aa30f464afff"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a714fe4a8b3b2d90c49a1aa30f464afff"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>next_not_tail</b> (void)</td></tr>
<tr class="separator:a714fe4a8b3b2d90c49a1aa30f464afff"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6d58ac894067abc8daf41cb122af6d02"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6d58ac894067abc8daf41cb122af6d02"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>prev_addr</b> (void)</td></tr>
<tr class="separator:a6d58ac894067abc8daf41cb122af6d02"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa516056e482c4e1ffe2ec2161a30c8f7"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa516056e482c4e1ffe2ec2161a30c8f7"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>prev_head</b> (void)</td></tr>
<tr class="separator:aa516056e482c4e1ffe2ec2161a30c8f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a172a34a07b217c2983e28a8e56189dd6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a172a34a07b217c2983e28a8e56189dd6"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>prev_code</b> (void)</td></tr>
<tr class="separator:a172a34a07b217c2983e28a8e56189dd6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08c75fe9ebd94bc69895db729bc270a3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a08c75fe9ebd94bc69895db729bc270a3"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>prev_data</b> (void)</td></tr>
<tr class="separator:a08c75fe9ebd94bc69895db729bc270a3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:add4798129c02426aaf6a93d923a1d1d3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="add4798129c02426aaf6a93d923a1d1d3"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>prev_not_tail</b> (void)</td></tr>
<tr class="separator:add4798129c02426aaf6a93d923a1d1d3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a74fe71e1a3b107f8fe4808ba9bde90c4"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a74fe71e1a3b107f8fe4808ba9bde90c4"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>decode_prev_insn</b> (<a class="el" href="classinsn__t.html">insn_t</a> *out)</td></tr>
<tr class="separator:a74fe71e1a3b107f8fe4808ba9bde90c4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a20fb8b83bc63c0a1711f2c9bb72da74d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a20fb8b83bc63c0a1711f2c9bb72da74d"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>decode_preceding_insn</b> (<a class="el" href="pro_8h.html#a9f46d9d52bbfcc78bc1836f4f2683da4">eavec_t</a> *visited, bool *p_farref, <a class="el" href="classinsn__t.html">insn_t</a> *out)</td></tr>
<tr class="separator:a20fb8b83bc63c0a1711f2c9bb72da74d"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="funcs_8hpp.html">funcs.hpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.9.1
</small></address>
</body>
</html>
